<?php

namespace frontend\controllers;

use Yii;
use frontend\models\produccion\TiemposMuerto;
use frontend\models\produccion\Temperaturas;
use frontend\models\produccion\MaterialesVaciado;
use frontend\models\produccion\ProduccionesDetalle;
use frontend\models\produccion\ProduccionesDefecto;
use frontend\models\programacion\Programacion;
use frontend\models\produccion\Producciones;

use frontend\models\produccion\VCapturaExceleada;
use frontend\models\programacion\VProgramacionesDia;
use common\models\catalogos\VDefectos;
use common\models\catalogos\Maquinas;
use common\models\catalogos\VMaquinas;
use common\models\catalogos\VEmpleados;
use common\models\catalogos\Areas;
use common\models\datos\Causas;
use common\models\catalogos\Materiales;
use common\models\catalogos\Lances;
use common\models\dux\Aleaciones;

class AngularController extends \yii\web\Controller
{
    protected $areas;
    
    public function init(){
        $this->areas = new Areas();
    }
    
    /************************************************************
     *                    RUTAS PARA LOS MENUS
     ************************************************************/
    
    public function actionIndex()
    {
        return $this->render('index',[
            'title' => 'Captura de Produccion',
        ]);
    }
    
    public function actionMoldeo()
    {
        return $this->CapturaProduccion(6);
    }
    
    public function actionVaciado()
    {
        return $this->CapturaProduccion(10);
    }
    
    public function actionLimpieza()
    {
        return $this->CapturaProduccion(12);
    }
    
    public function actionMoldeoVarel()
    {
        return $this->CapturaProduccion(6,true);
    }
    
    public function actionMoldeoKloster()
    {
        return $this->CapturaProduccion(6,true);
    }
    
    public function CapturaProduccion($subProceso,$filtraCliente = false)
    {
        $this->layout = 'produccion';
        
        return $this->render('CapturaProduccion', [
            'title' => 'Captura de Produccion',
            'IdSubProceso'=> $subProceso,
            'IdArea'=> $this->areas->getCurrent(),
            'IdEmpleado' => Yii::$app->user->getIdentity()->getAttributes()['IdEmpleado'],
        ]); 
    }
    
    /************************************************************
     *                    OBTENCION DE DATOS
     ************************************************************/
    
    public function actionEmpleados($depto=''){
        if($depto != ''){
            $depto = "AND IDENTIFICACION IN('".(is_array($depto) ? implode("','",$depto) : $depto)."')";
        }
        $model = VEmpleados::find()->where("IdEmpleadoEstatus <> 2 $depto"  )->orderBy('NombreCompleto')->asArray()->all();
        
        return json_encode(
            $model
        );   
    }
    
    public function actionMaquinas($IdSubProceso){
        $model = VMaquinas::find()->where([
            'IdSubProceso' => $IdSubProceso,
            'IdArea'=>$this->areas->getCurrent(),
        ])->asArray()->all();
        
        return json_encode($model);
    }
    
    public function actionProduccion(){
        
        $_GET['Fecha'] = date('Y-m-d',strtotime($_GET['Fecha']));
        $model = Producciones::find()->where($_GET)->with('lances')->asArray()->one();
        
        if($model == null){
            $model = $this->SaveProduccion($_GET);
        }
        
        $model['Fecha'] = date('Y-m-d',strtotime($model['Fecha']));
        
        return json_encode(
            $model
        );   
    }
    
    public function actionDetalle(){
       
        $model = ProduccionesDetalle::find()->where($_GET)->with('idProductos')->asArray()->all();
        foreach($model as &$mod){
            $mod['Inicio'] = date('H:i:s',strtotime($mod['Inicio']));
            $mod['Fin'] = date('H:i:s',strtotime($mod['Fin']));
        }
        
        return json_encode($model);
    }
    
    public function actionProgramacion(){
        $_GET['Dia'] = date('Y-m-d',strtotime($_GET['Dia']));
        $model = VProgramacionesDia::find()->where($_GET)->asArray()->all();
        
        foreach($model as &$mod){
            $mod['Class'] = "";
        }
        
        return json_encode($model);
    }
    
    public function actionFallas(){
        $IdSubProceso = $_GET['IdSubProceso'];
        $model = \common\models\catalogos\CausasTipo::find()->with('causas')->asArray()->all();
        
        foreach($model as $key => $mod){
            if(count($mod['causas'])>0){
                foreach($mod['causas'] as $key2 => $causa){
                    if($causa['IdSubProceso'] != $IdSubProceso){
                        unset($model[$key]['causas'][$key2]);
                    }
                }
            }else{
                unset($model[$key]);
            }
        }
        return json_encode($model);
    }
    
    public function actionTiempos(){
        $model = TiemposMuerto::find()->where($_GET)->asArray()->all();
        return json_encode($model);
    }
    
    /************************************************************
     *                    FUNCIONES EN GENERAL
     ************************************************************/
    
    public function SaveProduccion($dat){
        $data['Producciones'] = $dat;
        
        if(!isset($data['Producciones']['IdArea'])){
            $data['Producciones']['IdArea'] = $this->areas->getCurrent();
        }

        if(!isset($data['Producciones']['Fecha'])){
            $data['Producciones']['Fecha'] = date('Y-m-d');
        }

        if(!isset($data['Producciones']['IdCentroTrabajo'])){
            $data['Producciones']['IdCentroTrabajo'] = VMaquinas::find()->where(['IdMaquina'=>$data['Producciones']['IdMaquina']])->one()->IdCentroTrabajo;
        }
        
        if(!isset($data['Producciones']['IdProduccionEstatus'])){
            $data['Producciones']['IdProduccionEstatus'] = 1;
        }
        
        if(!isset($data['Producciones']['IdEmpleado'])){
            $data['Producciones']['IdEmpleado'] = Yii::$app->user->getIdentity()->getAttributes()['IdEmpleado'];
        }

        $model = new Producciones();
        $model->load($data);
        if(!$model->save()){
            return false;
        }
        return Producciones::find()->where(['IdProduccion'=>$model->IdProduccion])->asArray()->one();
    }
    
    function actionSaveDetalle(){
        $datos = json_decode($_GET['datos']);
        $datos->IdProduccionDetalle *= 1;
        $datos->Eficiencia *= 1;
        $datos->IdProgramacion *= 1;
        $datos->IdProductos *= 1;
        $datos->IdProduccion *= 1;
        $datos->CiclosMolde *= 1;
        $datos->PiezasMolde *= 1;
        $datos->Programadas *= 1;
        $datos->Hechas *= 1;
        $datos->Rechazadas *= 1;
        
        $model = new ProduccionesDetalle();
        
        $dat['IdProduccionDetalle'] = $datos->IdProduccionDetalle;
        $dat['IdProduccion'] = $datos->IdProduccion;
        $dat['IdProgramacion'] = $datos->IdProgramacion;
        $dat['IdProductos'] = $datos->IdProductos;
        $dat['Inicio'] = $_GET['Fecha'] . " " . $datos->Inicio;
        $dat['Fin'] = $_GET['Fecha'] . " " . $datos->Fin;
        $dat['CiclosMolde'] = $datos->CiclosMolde;
        $dat['PiezasMolde'] = $datos->PiezasMolde;
        $dat['Programadas'] = $datos->Programadas;
        $dat['Hechas'] = $datos->Hechas;
        $dat['Rechazadas'] = $datos->Rechazadas;
        $dat['Eficiencia'] = $datos->Eficiencia;
        
        //var_dump($dat);exit;
        $model->Actualizar($dat);
        //return $model;
    }
    
    function actionSaveFallas(){
        $datos = json_decode($_GET['datos']);
                
        $model = new TiemposMuerto();
        
        $dat['IdTiempoMuerto'] = $datos->IdTiempoMuerto * 1;
        $dat['IdMaquina'] = $datos->IdMaquina * 1;
        $dat['IdCausa'] = $datos->IdCausa * 1;
        $dat['Fecha'] = $_GET['Fecha'];
        $dat['Inicio'] = $_GET['Fecha'] . " " . $datos->Inicio;
        $dat['Fin'] = $_GET['Fecha'] . " " . $datos->Fin;
        $dat['Descripcion'] = $datos->Descripcion;
        
        var_dump($datos);
        $model->load(['TiemposMuerto'=>$dat]);
        var_dump($model);
        $model->save();
        //var_dump($model);exit;
        //return $model;
    }
    
    function actionSaveProgramacion(){
        $IdProgramacion = $_GET['IdProgramacion'];
        $IdProgramacionSemana = $_GET['IdProgramacionSemana'];
        $IdProgramacionDia = $_GET['IdProgramacionDia'];
        $Fecha = $_GET['Fecha'];
        
        $Programacion = new Programacion();
        $ProduccionesDetalle = ProduccionesDetalle::find()->where(['IdProgramacion'=>$IdProgramacion,])->with('idProduccion')->asArray()->all();
        
        var_dump($ProduccionesDetalle);exit;
        foreach($ProduccionesDetalle as $detalle){
            
        }
        var_dump($totales);exit;
    }
}

